#include"my_string.h"
#include <assert.h>
int my_strcmp(const char arr1[30],const char arr2[30])
{   assert(arr1&&arr2);
    int ret=0;
    int i=0;
    while(*arr1++ == *arr2++)
    {;}
    if(arr2==arr1&&arr1==0)
    {
        return 0;
    }
    return *arr1-*arr2;
}

char* my_strcat(char arr1[30],const char arr2[30])
{
    int i=0;
    char* ret=arr1;
    char* p=NULL;
    do {
        arr1++;
    }while (*arr1!=0);
    p=arr1; //p现在指向的位置是arr1字符串的第一个"\0"
    while(1)
    {
        if(arr2[i]!=0)
        {
             *p=arr2[i];
             i++;
             p++;
        }
        else
        {
             *p=arr2[i];
             return ret;
        }
       
    }
}

char* my_strncat(char arr1[30],char arr2[30],int con)
{
   int i=0;
    char* ret=arr1;
    char* p=NULL;
    do {
    p=arr1;
        p++;
        arr1++;
    }while (arr1[i]!=0);
    p=arr1; //p现在指向的位置是arr1字符串的第一个"\0"
    for(i=0;i<con;i++)
    {
        *p++=*arr2++;
    }
    *p=0;
    return ret;
}


int my_strncmp(const char arr1[30],const char arr2[30],int con)
{
    int ret=0;
    int i=0;
    for(i=0;i<con;i++)
    {
        if(*arr1==*arr2)
        {
            arr1++;
            arr2++;
        }
        else
        {
            return *arr1-*arr2;
        }
    }
    arr1--;
    arr2--;
    return *arr1-*arr2;
}

void* my_strstr(const char arr1[30],const char arr2[30])
{
    assert(arr2!=0);
    assert(arr1!=0);
    char* std1=(char*)arr1;
    char* std2=(char*)arr2;
    char* cur=std1;
    char* p2=(char*)arr2;
    while(*cur)
    {
        std1=cur;
        std2=p2;
        while(*std1==*std2&&*std1!=0&&std2!=0)
        {
            std1++;
            std2++;
        }
        if(*std2==0)
        {
            return cur;
        }
        cur++;
    }
    return NULL;
}

void* my_memcpy(void* arr1,void* arr2,int size)
{  char* ret=(char*)arr1;
    for(int i=0;i<size;i++)
    {
        *(char*)arr1=*(char*)arr2;
        arr1++;
        arr2++;
    }
    return ret;
}
void* my_memmove(void* arr1,void* arr2,int size)
{
    char* ret=(char*)arr1;
    if (arr1<arr2)//目的地在左边，从前往后复制
    {
    int i=0;
    for(i=0;i<size;i++)
    {
        *(char*)arr1=*(char*)arr2;
        arr1++;
        arr2++;
    }
    }
    else//目的地在右边，从后往前复制
    {
        int j=size;
        for(j=size;j>0;j--)
        {
           *((char*)arr1+j-1)=*((char*)arr2+j-1);
        }
    }
    return ret;
}